package edu.tfh.s2.ehkbot.gerete.sensoren;

/**
 * Kamera implemenetiert eine Kamera. Kamera nutzt das State Pattern.
 * 
 * @author s2zehn
 */
public class Kamera implements Cloneable {

	/**
	 * Das State Interface für Kamera.
	 */
	public interface KameraState extends Cloneable {

		/**
		 * @see java.lang.Object#clone()
		 */
		public Object clone();

		/**
		 * Liefert das Bild welches die Kamea Sieht.
		 * 
		 * @return Das Bild.
		 */
		public Bild getBild();

	}

	private KameraState state;

	/**
	 * Konstruktor für die Kamera
	 * 
	 * @param state
	 *            Das State welches das verhalten bestimmt.
	 */
	public Kamera(KameraState state) {
		this.state = state;

	}

	/**
	 * @see java.lang.Object#clone()
	 */
	@Override
	public Object clone() {
		return new Kamera((KameraState) state.clone());
	}

	/**
	 * Liefert das Bild welches die Kamea Sieht.
	 * 
	 * @return Das Bild.
	 */
	public Bild getBild() {
		return state.getBild();
	}

}